/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managedbeans;

import beans.Atualizacao;
import beans.Convite;
import beans.Usuario;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import persistence.DAO;
import persistence.DAOConvite;
import persistence.DAOUsuario;
import persistence.EMF;

/**
 *
 * @author alexandre
 */
@ManagedBean
@RequestScoped
public class ConviteMB {
    
    private Usuario user;
    private List<Convite> convites = new ArrayList<Convite>();
    private HttpSession session;
    private DAOConvite daoc;
    private DAO dao;
    private Convite c;
    private boolean solPendente;
    private boolean convPendente;
    private Usuario us;
    private Usuario amigo;

    public ConviteMB() {
    
        if (session == null) {
            session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
        } else {
            session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        }
        
        user = (Usuario) session.getAttribute("usuarioLogado");
        daoc = new DAOConvite(EMF.getEntityManager());
        convites = daoc.buscaConvites(user);
        us = new Usuario();
        amigo = new Usuario();
        us=user;
    }

    public Usuario getUs() {
        return us;
    }

    public void setUs(Usuario us) {
        this.us = us;
    }

    public Usuario getAmigo() {
        return amigo;
    }

    public void setAmigo(Usuario amigo) {
        this.amigo = amigo;
    }
    
    private boolean convite(){
        DAO daoconvite = new DAO(EMF.getEntityManager(), Convite.class);
        List<Convite> convites = daoconvite.lista();
        
        System.out.println("us.getId() " + us.getId() + " amigo.getid() " + amigo.getId());
        
        for(Convite c : convites){
            if(c.getUserSender().getId().equals(us.getId()) && c.getUserReceiver().getId().equals(amigo.getId())){
                return true;
            }else{
                return false;
            }
        }
        return false;
    }

    public boolean isConvPendente() {
        convPendente = convite();
        return convPendente;
    }

    public void setConvPendente(boolean convPendente) {
        this.convPendente = convPendente;
    }
    
    public boolean isSolPendente() {
//        DAOConvite daoc = new DAOConvite(EMF.getEntityManager());
//        solPendente = daoc.solitacaoPendente(us.getId(), amigo.getId());
        
        return solPendente;
    }

    public void setSolPendente(boolean solPendente) {
        this.solPendente = solPendente;
    }

    public List<Convite> getConvites() {
        return convites;
    }

    public void setConvites(List<Convite> convites) {
        this.convites = convites;
    }

    public Convite getC() {
        return c;
    }

    public void setC(Convite c) {
        this.c = c;
    }
    
    public String aceitar(){
        
        Usuario u1 = c.getUserReceiver();
        Usuario u2 = c.getUserSender();
        
        
        
        Atualizacao a = new Atualizacao();
        a.setAlvo("Adicionou um amigo");
        a.setDataAtualiza(Calendar.getInstance().getTime());
        a.setUserPublica(u1);
        DAO daoat = new DAO(EMF.getEntityManager(), Atualizacao.class);
        daoat.salva(a);
        DAOUsuario daou = new DAOUsuario(EMF.getEntityManager());
        daou.atualizacoes(u1, a);
        
        
        a.setAlvo("Adicionou um amigo");
        a.setDataAtualiza(Calendar.getInstance().getTime());
        a.setUserPublica(u2);
        daoat.salva(a);
        daou.atualizacoes(u2, a);
        
        
        
        List<Usuario> users = new ArrayList<Usuario>();
        users = u1.getAmigos();
        users.add(u2);
        u1.setAmigos(users);
        dao = new DAO(EMF.getEntityManager(), Usuario.class);
        dao.atualiza(u1);
        users = u2.getAmigos();
        users.add(u1);
        u2.setAmigos(users);
        dao.atualiza(u2);
        session.removeAttribute("usuarioLogado");
        session.setAttribute("usuarioLogado", u1);
        
        recusar();
        return null;
    }
    
    public String recusar(){
        dao = new DAO(EMF.getEntityManager(), Convite.class);
        dao.remove(c);
        return null;
    }
    
}
